home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / C⁄C++ OS8 / Everything / ModelessStuff.cp < prev    next >
Encoding:
Text File  |  1998-09-06  |  3.0 KB  |  142 lines  |  [TEXT/CWIE]

  1. // ModelessStuff.cp -- modeless dialog
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12.  
  13. #include "ResourceDefs.h"
  14. #include "Miscellany.h"
  15. #include "ControlUtils.h"
  16.  
  17. #include "ModelessStuff.h"
  18.  
  19. #define kToolsPalette        1
  20. #define kPopupsBox        2
  21. #define kFromValuesList2Popup        3
  22. #define kFromMenuPopup        4
  23. #define kListsBox        5
  24. #define kTextListList        6
  25.  
  26.  
  27. //----------
  28. CModelessStuff*        CModelessStuff::sDialog = nil;
  29.  
  30. //----------
  31. // static
  32. CModelessStuff*        CModelessStuff::Create ()
  33. {
  34.     CModelessStuff*        dialog = new CModelessStuff;
  35.     DModelessStuffData*        data = new DModelessStuffData;
  36.  
  37.     dialog->MakeDialog (DLOG_ModelessStuff);
  38.     dialog->ConnectToData (data);
  39.  
  40.     return dialog;
  41. }
  42.  
  43. //----------
  44. // static
  45. CModelessStuff*        CModelessStuff::Show ()
  46. {
  47.     if (sDialog == nil) {
  48.         sDialog = CModelessStuff::Create ();
  49.     }
  50.     if (sDialog != nil) {
  51.         ::SelectWindow (sDialog->mDialog);
  52.         ::ShowWindow (sDialog->mDialog);
  53.     }
  54.     return sDialog;
  55. }
  56.  
  57. //----------
  58. CModelessStuff::CModelessStuff ()
  59. {
  60.     mData = nil;
  61. }
  62.  
  63. //----------
  64. CModelessStuff::~CModelessStuff ()
  65. {
  66.     sDialog = nil;
  67. }
  68.  
  69. //----------
  70. void    CModelessStuff::FinishMake ()
  71. {
  72.     mToolsHandle = GetControlItem (kToolsPalette);
  73.     mPopupsHandle = GetControlItem (kPopupsBox);
  74.     mFromValuesList2Handle = GetControlItem (kFromValuesList2Popup);
  75.     mFromMenuHandle = GetControlItem (kFromMenuPopup);
  76.     mListsHandle = GetControlItem (kListsBox);
  77.     mTextListHandle = GetControlItem (kTextListList);
  78.     BuildTextListList (mTextListHandle);
  79. }
  80.  
  81. //----------
  82. void    CModelessStuff::ConnectToData (
  83.     AMSignaler*        inData)
  84. {
  85.     AMDialog::ConnectToData (inData);
  86.     mData = (DModelessStuffData*) inData;
  87.  
  88.     SetControlValue (mToolsHandle, mData->GetTools3 ());
  89.     SetControlValue (mFromValuesList2Handle, mData->GetFromValuesList4 ());
  90.     SetControlValue (mFromMenuHandle, mData->GetFromMenu3 ());
  91.     SetListBoxChoice (mTextListHandle, mData->GetTextList3 ());
  92. }
  93.  
  94. //----------
  95. void    CModelessStuff::DataChanged (
  96.     long        inDataID)
  97. {
  98.     if (inDataID == idTools3) {
  99.         SetControlValue (mToolsHandle, mData->GetTools3 ());
  100.     }
  101.     if (inDataID == idFromValuesList4) {
  102.         SetControlValue (mFromValuesList2Handle, mData->GetFromValuesList4 ());
  103.     }
  104.     if (inDataID == idFromMenu3) {
  105.         SetControlValue (mFromMenuHandle, mData->GetFromMenu3 ());
  106.     }
  107. }
  108.  
  109. //----------
  110. void    CModelessStuff::BuildTextListList (
  111.     ControlHandle        inControl)
  112. {
  113.     ListHandle        list = GetListHandle (inControl);
  114.  
  115.     AddToList ("\pOne",   list);
  116.     AddToList ("\pTwo",   list);
  117.     AddToList ("\pThree", list);
  118.     AddToList ("\pInfinity",  list);
  119. }
  120.  
  121.  
  122. //----------
  123. void    CModelessStuff::DoItem (
  124.     SInt16        inItemHit)
  125. {
  126.     switch (inItemHit) {
  127.     case kToolsPalette:
  128.             mData->SetTools3 (GetControlValue (mToolsHandle));
  129.         break;
  130.     case kFromValuesList2Popup:
  131.             mData->SetFromValuesList4 (GetControlValue (mFromValuesList2Handle));
  132.         break;
  133.     case kFromMenuPopup:
  134.             mData->SetFromMenu3 (GetControlValue (mFromMenuHandle));
  135.         break;
  136.     case kTextListList:
  137.             mData->SetTextList3 (GetListBoxChoice (mTextListHandle));
  138.         break;
  139.  
  140.     } // switch
  141. }
  142.